Google Cloud Storage
command line gsutil
-o: option設定をkey:valueで(一時的に)設定( botoファイルに書く設定のもの)
bucket別のサイズ一覧: gsutil -o gsutil:default_project_id=my-project-name du -sch -m: multi, parallel operation
-D: shows HTTP req/headers for debugging
-h: specific http headers
-q: quite
-u: allows you to specifyy a user project to be billed.. (requestした人払いのオブジェクト用?)
概念:
バケットの中に、オブジェクトを置いておく?
ファイルではなく、オブジェクトなので、ファイルシステムで期待されるような機能がないことがある。
versioning
バケット単位で制御
何かのバックアップとしては、versioningは必要。
日付のタイムスタンプをつけて保存でも、、いい気もするが、、
オブジェクト単位 , バケット単位の両方で可能
BucketのREADを持っていても、中のObjectのREADを持っていない場合、そのObjectを読むことはできない。
listはできてもgetはできない例は他にもある?
基本コマンド
$ gstuil versioning set on gs://foo
で設定はOK.
$ gsutil cp bar gs://foo/bar
でcopy(backup)
$ gstuil ls -a gs://foo/bar
で確認する。ハッシュ以降がついたファイルが並ぶ。
データの管理運用
オブジェクトライフサイクルルールというのがある。
条件: 経過時間、作成日、ストレージクラス、バージョン化されてるか、バージョン化でアーカイブか
ただ、バケットに一律適用だと思うので、
ライフサイクルを適用するかどうかで、バケットを分けるのがよいかも。
バージョンニングするかどうか、ストレージクラスを、バケット内で分けるのもありだが、、
見失いそう。
検索すると、AWS S3の記事が沢山出るので、使われる機能で、cloud storageでも追加された感じなのかな。 リージョンについて
たとえ単一リージョンを選んだ場合でも、リージョン内の複数のゾーンにデータは冗長化されるため、堅牢性は高いといえます。
デュアルリージョン、マルチリージョン(単一エリア(asis, eu, us)もある。
小さなファイルを大量に -mでマルチスレッドの多重処理
大きなファイルを 並列upload, コンポーネント分割して並列アップロード、分割ファイルサイズを指定
download時に、スレッドではなく、プロセス数を増やす
ファイル名による
ファイル名が非常に似ているので、接続の大部分が同じシャードに誘導されるからです
download時に、
デフォルトの1プロセス4スレッドをやめて、プロセスを複数にして効率化
http range getで、スライスされたdownload